Computing is evolving at a fast pace. More often than not, the volume of information, jobs, and processes are continuing to grow bigger and bigger. Even though computer servers continue to become cheaper, the need for more computing resources continues to impose high costs for businesses wanting to have a large information technology infrastructure. To accommodate such growth and demand, cloud computing was introduced as a solution which aims to provide converged infrastructure, shared services, and economies of scale. For a user, the information technology infrastructure is called a “cloud” because the infrastructure is transparent to the user, as if obscured by a cloud.
Cloud computing utilizes large groups of remote servers that are networked together to provide high volume data storage and online access to computer services or resources. Cloud computing provides the infrastructure for resources to be shared by many services. In advanced cloud computing solutions, cloud computing provides the means for on-demand services where a cloud computer cluster can be allocated on-the-fly and/or a cloud service can be provisioned and be ready to go whenever the service is needed. These advanced cloud computing solutions have provided tremendous advantages including: flexibility, low up front infrastructure costs, agility, manageability, and speed. As user requirements and needs become more demanding, providing an optimal cloud computing system becomes more difficult and non-trivial.